//package xml.sax.plm;
//
//import java.io.FileInputStream;
//import java.io.FileNotFoundException;
//import java.io.Serializable;
//import java.util.ArrayList;
//import java.util.List;
//import javax.xml.bind.JAXBContext;
//import javax.xml.bind.JAXBElement;
//import javax.xml.bind.JAXBException;
//import javax.xml.bind.Unmarshaller;
//import service.batch.httpmessageconverter.outer.RC.I.P.D;
//import service.test.util.ClassNameLoader;
//
//public class PLMToESIConverter
//{
//
//    public static void main(String[] args) throws JAXBException, FileNotFoundException {
//
//        String name = ClassNameLoader.getPackageName(new Object() {
//        }.getClass());
//        JAXBContext jc = JAXBContext.newInstance(name);
//        Unmarshaller u = jc.createUnmarshaller();
//        FileInputStream f = new FileInputStream("HttpMessage.xml");
//        RC item = (RC) u.unmarshal(f);
//        String serviceName = item.s;
//        StringBuffer sb = fillPreParams(serviceName);
//        List<RC.I.P> inputParamList = item.i.p;
//        for (RC.I.P param : inputParamList) {
//            String parameterName = param.getN();
//            List<Serializable> parameterValue = param.getContent();
//            String dimension = String.valueOf(param.getDim());
//            //TABLE
//            if (dimension.equalsIgnoreCase("2")) {
//                StringBuffer sbTabLe = handleTable(param);
//                sb.append(sbTabLe.toString());
//                //ARRAY
//            } else if (dimension.equalsIgnoreCase("1")) {
//                StringBuffer sbArray = handleArray(param);
//                sb.append(sbArray.toString());
//                //REGULAR INPUT      
//            } else {
//                sb.append("<I N=\"");
//                sb.append(parameterName + "\">");
//                sb.append(parameterValue.get(0) + "</I>");
//            }
//        }
//        sb.append("</PAR>");
//        sb.append("</EXT>");
//        System.out.println(sb.toString());
//    }
//
//    private static StringBuffer fillPreParams(String serviceName) {
//
//        StringBuffer sb = new StringBuffer();
//        sb.append("<EXT V=\"1.0\">");
//        sb.append("<SN>");
//        sb.append(serviceName);
//        sb.append("</SN>");
//        sb.append("<FCID>005</FCID>");
//        sb.append("<TCID>000</TCID>");
//        sb.append("<CTID>1323672808042001</CTID>");
//        sb.append("<UID>T99002</UID>");
//        sb.append("<PAR>");
//        return sb;
//    }
//
//    private static StringBuffer handleArray(RC.I.P param) {
//
//        StringBuffer sb = new StringBuffer();
//        List<?> arrayParameterList = (ArrayList<?>) param.getContent();
//        List<ArrayModel> arrayDataList = new ArrayList<ArrayModel>();
//        for (Object object : arrayParameterList) {
//            if (object instanceof JAXBElement<?>) {
//                JAXBElement<?> paramD = (JAXBElement<?>) object;
//                RC.I.P.D d = (D) paramD.getValue();
//                ArrayModel arrayModel = new ArrayModel(param.getN(), String.valueOf(d.getR()), d.getValue());
//                arrayDataList.add(arrayModel);
//            }
//        }
//        sb.append(" <A S=" + arrayDataList.size() + " N=\"" + arrayDataList.get(0).getArrayName() + "\">");
//        for (ArrayModel model : arrayDataList) {
//            sb.append("<V>" + model.getData() + "</V>");
//        }
//        sb.append("</A>");
//        return sb;
//    }
//
//    private static StringBuffer handleTable(RC.I.P param) {
//
//        StringBuffer sb = new StringBuffer();
//        List<?> tableParameterList = (ArrayList<?>) param.getContent();
//        List<TableModel> tableDataList = new ArrayList<TableModel>();
//        List<String> columnNameList = new ArrayList<String>();
//        for (Object object : tableParameterList) {
//            if (object instanceof JAXBElement<?>) {
//                JAXBElement<?> paramD = (JAXBElement<?>) object;
//                RC.I.P.D d = (D) paramD.getValue();
//                TableModel tableModel = new TableModel(param.getN(), d.getC(), String.valueOf(d.getR()), d.getValue());
//                tableDataList.add(tableModel);
//            }
//        }
//        columnNameList = getUniqueColumnNames(tableDataList);
//        for (String columnName : columnNameList) {
//            sb.append(" <A TN=\"" + param.getN() + "\" S=" + tableDataList.size() / columnNameList.size() + " N=\"" + columnName + "\">");
//            for (TableModel model : tableDataList) {
//                if (model.getColumnName().equals(columnName)) {
//                    sb.append("<V>" + model.getData() + "</V>");
//                }
//            }
//            sb.append("</A>");
//        }
//        return sb;
//    }
//
//    private static List<String> getUniqueColumnNames(List<TableModel> tableDataList) {
//
//        List<String> columnNameList = new ArrayList<String>();
//        for (TableModel tableModel : tableDataList) {
//            if (!columnNameList.contains(tableModel.getColumnName())) {
//                columnNameList.add(tableModel.getColumnName());
//            }
//        }
//        return columnNameList;
//    }
//}
